package net.seayan.designpattern4j.abstractfactory.factory;

import net.seayan.designpattern4j.abstractfactory.IModule;
import net.seayan.designpattern4j.abstractfactory.IModuleFactory;
import net.seayan.designpattern4j.abstractfactory.ModuleEnum;

/**
 * 抽象工厂类 该类主要实现根据类名获取相关对象的功能 具体对象的生成控制由子类决定 实现工厂类接口是用于定义生产线
 * 
 * @ClassName: AbstractModuleFactory
 * @author: yanmeng
 * @date:2012-8-30 下午2:51:06
 */
public abstract class AbstractModuleFactory implements IModuleFactory {

	//几个方法共享某接口时，可以采用继承的方式，由父类统一控制生成转发
	protected IModule createModule(ModuleEnum moduleEnum) {
		IModule module = null;

		if (!moduleEnum.getValue().equals("")) {
			try {
				module = (IModule) Class.forName(moduleEnum.getValue())
						.newInstance();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return module;
	}
}
